package org.hamcrest.core;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.AllOf.allOf;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.hamcrest.core.IsNot.not;
import org.hamcrest.AbstractMatcherTest;
import org.hamcrest.Matcher;
public class AllOfTest extends AbstractMatcherTest {
@Override
@SuppressWarnings("unchecked")
protected Matcher<?> createMatcher() {
return allOf(equalTo("irrelevant"));
}
@SuppressWarnings("unchecked")
public void testEvaluatesToTheTheLogicalConjunctionOfTwoOtherMatchers() {
assertThat("good", allOf(equalTo("good"), equalTo("good")));
assertThat("good", not(allOf(equalTo("bad"), equalTo("good"))));
assertThat("good", not(allOf(equalTo("good"), equalTo("bad"))));
assertThat("good", not(allOf(equalTo("bad"), equalTo("bad"))));
}
@SuppressWarnings("unchecked")
public void testEvaluatesToTheTheLogicalConjunctionOfManyOtherMatchers() {
assertThat("good", allOf(equalTo("good"), equalTo("good"), equalTo("good"), equalTo("good"), equalTo("good")));
assertThat("good", not(allOf(equalTo("good"), equalTo("good"), equalTo("bad"), equalTo("good"), equalTo("good"))));
}
@SuppressWarnings("unchecked")
public void testSupportsMixedTypes() {
final Matcher<SampleSubClass> all = allOf(
equalTo(new SampleBaseClass("bad")),
equalTo(new SampleBaseClass("good")),
equalTo(new SampleSubClass("ugly")));
final Matcher<SampleSubClass> negated = not(all);
assertThat(new SampleSubClass("good"), negated);
}
@SuppressWarnings("unchecked")
public void testHasAReadableDescription() {
assertDescription("(\"good\" and \"bad\" and \"ugly\")",
allOf(equalTo("good"), equalTo("bad"), equalTo("ugly")));
}
@SuppressWarnings("unchecked")
public void testMismatchDescriptionDescribesFirstFailingMatch() {
assertMismatchDescription("\"good\" was \"bad\"", allOf(equalTo("bad"), equalTo("good")), "bad");
}
}